package d6_tcp03;

import java.io.DataInputStream;
import java.io.InputStream;
import java.net.Socket;

//用最简单的方式,创建线程
public class ServerReaderThread extends Thread {

    //2、获取各自的管道
    private Socket socket;

    public ServerReaderThread(Socket socket) {
        this.socket = socket;
    }

    //3、利用构造器,进行初始化-->将接通的管道传送过来


    //1、要记性读数据的逻辑,写在里面
    @Override
    public void run() {
        try {
            //2、负责读取它负责的客户端消息
            //3、从socket通信管道中得到一个字节输入流
            InputStream is = socket.getInputStream();
            //4、将字节输入流包装成高级的特殊数据输入流
            DataInputStream dis = new DataInputStream(is);
            //5、进行读取数据
            //要进行反复接受
            while (true) {
                String message = dis.readUTF();
                //6、进行数据的展示
                System.out.println("服务端收到: " + message);

                //7、拿到对方的ip和端口
                System.out.println("对方的IP:" + socket.getInetAddress().getHostAddress());
                System.out.println("对方的端口:" + socket.getPort());

                //8、分隔开
                System.out.println("---------------------------------");
            }
        } catch (Exception e) {
            //追踪对方的ip,是否下线
            System.out.println(socket.getInetAddress().getHostAddress() + ":" + socket.getPort() + "下线了~~");
        }

    }
}
